<?php

namespace Swiftx\Interfaces\Application;
use Swiftx\Interfaces\Ioc\Container;
use Swiftx\Interfaces\Bundle\Kernel as BundleInterface;

/**
 * 应用程序内核接口
 * @package Swiftx\Application
 */
interface Kernel extends Container {

    /**
     * 获取配置对象
     * @return Config
     */
    public function getConfig():Config;

    /**
     * 注册Bundle组件
     * @param BundleInterface $object
     */
    public function registerBundle(BundleInterface $object);

    /**
     * 项目初始化
     */
    public function init();

    /**
     * 启动内核引导
     */
    public function boot();

}